"""
将数据写入Excel文件

Excel 2007以前的版本 ---> xls ---> xlwt / xlrd
Excel 2007以后的版本 ---> xlsx ---> openpyxl

每个Excel文件称为一个工作簿（workbook）
一个工作簿下可以创建多个工作表（worksheet）
工作表是二维表，有行有列，行和列交汇的地方叫单元格（cell）
"""
import random
import time

import bs4
import requests
import xlwt

# 创建工作簿对象
wb = xlwt.Workbook()
# 添加一张工作表
sheet = wb.add_sheet('Top250')
# 向表中写入数据
sheet.write(0, 0, '标题')
sheet.write(0, 1, '评分')
row = 1
for page in range(10):
    resp = requests.get(
        url=f'https://movie.douban.com/top250?start={page * 25}',
        headers={
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) '
                          'AppleWebKit/537.36 (KHTML, like Gecko) '
                          'Chrome/88.0.4324.192 Safari/537.36'
        },
        proxies={
            'http': 'socks5://127.0.0.1:1086',
            'https': 'socks5://127.0.0.1:1086'
        }
    )
    if resp.status_code == 200:
        soup = bs4.BeautifulSoup(resp.text, 'html.parser')
        title_spans_list = soup.select('div.info > div.hd > a > span:nth-child(1)')
        rating_spans_list = soup.select('div.info > div.bd > div > span.rating_num')
        for title_span, rating_span in zip(title_spans_list, rating_spans_list):
            sheet.write(row, 0, title_span.text)
            sheet.write(row, 1, rating_span.text)
            row += 1
    else:
        print('无法获取数据！！！')
    time.sleep(random.randint(1, 3))
# 保存工作簿
wb.save('豆瓣电影.xls')
